Some computer graphics rendering algorithms, particularly ray-tracing algorithms, utilize bounding volumes to make certain calculations more efficient. For example, instead of intersecting a ray with a triangle, the ray may be intersected with a cube or sphere that bounds the triangle. The calculations for intersecting the ray with the cube or sphere shaped bounding volume may be much simpler to perform than the calculations for intersecting the ray with the triangle. In order to easily access the objects in a 3D model, bounding volumes may be organized in abounding volume hierarchy. The bounding volume hierarchy commonly takes the form of a binary tree or a quad tree. The leaf nodes of the tree store objects (e.g., triangles) in the model, or bounding volumes associated with a single object, and the parent node of two or more leaf nodes store bounding volumes that enclose each of the objects in the leaf nodes. The root node stores a bounding volume that encloses every object represented by the bounding volume hierarchy.
The bounding volume hierarchy may become quite large for complex models used in computer rendering algorithms. The models may contain hundreds of thousands or millions of individual graphics objects (i.e., triangles). In addition to the data required to store each of the objects, the bounding volume hierarchy must also store coordinates that represent the dimensions of the bounding volumes within the hierarchy. Commonly, an uncompressed bounding volume hierarchy may be hundreds of megabytes (MB) or gigabytes (GB) in size. These bounding volume hierarchies are typically utilized by graphics processing units that include a dedicated local memory (i.e., Random Access Memory or RAM). Local RAM sizes may only be 512 MB or 1 GB, thereby limiting the size of bounding volume hierarchies that may be stored entirely on the local memory without implementing a backing store associated with long latencies for reading and writing. Long latency access to a backing store reduces the efficiency of the computer rendering algorithm thereby increasing the time it takes to render a scene. However, reducing the size of the bounding volume hierarchy by limiting the number of objects in a model may reduce the quality of the rendering generated because the model is of lower resolution. Thus, there is a need for more efficient compression of bounding volume hierarchies that addresses this issue and/or other issues associated with the prior art.